08.ESP8266驱动WS2812彩灯

您所在的位置:网站首页 ESP8266 led时钟程序 08.ESP8266驱动WS2812彩灯

08.ESP8266驱动WS2812彩灯

2023-10-08 22:18| 来源: 网络整理| 查看: 265

本篇介绍ESP8266使用NeoPixel库来驱动IOT Kit板载WS2812彩灯。

1. WS2812彩灯介绍

WS2812是一个集控制电路与发光电路于一体的智能外控LED光源,外型与5050LED灯珠相同,每个灯珠都是一个像素点。像素点内包含数字接口、数据锁存、信号整形放大驱动电路,还包含高精度的内部振荡器和12V高压可编程定电流控制部分。

WS2812灯带

数据协议采用单线归零码的通讯方式,像素点在上电复位以后,DIN端接受从控制器传输过来的数据,首先送过来的24bit数据被第一个像素点提取后,送到像素点内部的数据锁存器,剩余的数据经过内部整形处理电路整形放大后通过DO端口开始转发输出给下一个级联的像素点,每经过一个像素点的传输,信号减少24bit。像素点采用自动整形转发技术,使得该像素点的级联个数不受信号传送的限制,仅仅受限信号传输速度要求。

时序波形

按照数据传输协议即可对WS2812进行驱动,当然对于WS2812有许多开源的驱动库,下面进行Adafruit_NeoPixel驱动库的安装。

2. 安装驱动库

在Arduino IDE中点击「项目」—「加载库」—「管理库」,查找Adafruit_NeoPixel库,选择最新版本,点击安装。

查找库

在弹出的对话框中选择Install all,安装全部的关联库。

安装关联库

3. 硬件连接及程序下载

在IOT Kit上,WS2812通过跳线帽连接到ESP8266的GPIO0。

硬件连接

在Arduino IDE中新建sketch,拷贝如下代码保存并下载到开发板。

/* * ws2812b * ESP8266驱动WS2812彩灯 * 板载接口GPIO0 */ #include #define PIN 0 //GPIO0接口 #define NUMPIXELS 1 //彩灯个数 Adafruit_NeoPixel led(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); void setup() { led.begin(); led.setBrightness(10); //设置亮度 (0~255) } void loop() { led.setPixelColor(0,led.Color(255, 0, 0)); //红色 led.show(); //刷新显示 delay(1000); led.setPixelColor(0,led.Color(0, 255, 0)); //绿色 led.show(); //刷新显示 delay(1000); led.setPixelColor(0,led.Color(0, 0, 2550)); //蓝色 led.show(); //刷新显示 delay(1000); led.clear();//清空显示 led.show(); //刷新显示 delay(1000); }

上传成功后,板载WS2812彩灯将红绿蓝交替显示。

实验现象

4.常用库函数介绍

下面对Adafruit_NeoPixel库常用函数进行介绍:

Adafruit_NeoPixel led(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800):创建对象,包括信号引脚以及像素点数量,最后一个参数是像素类型标志,一般默认即可。led.begin():对象初始化。led.show():显示刷新,每次设置完毕必须调用此函数。led.clean():将颜色值清除到0。led.setBrightness():设置亮度。范围0~255。led.setPixelColor():设置颜色值,第一个参数为像素点序号。led.Color():将RGB单独颜色值打包成32位颜色值。

关于Adafruit_NeoPixel库详细介绍,请参考GitHub。

关注公众号「TonyCode」,获取完整代码。

个人博客1 个人博客2 回复「1024」获取1000G学习资料



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3